home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1996-12-23 | 1.3 KB | 34 lines | [TEXT/3PRM] |
- definition module StdTuple
-
- // ****************************************************************************************
- // Concurrent Clean Standard Library Module Version 1.1
- // Copyright 1995 University of Nijmegen
- // ****************************************************************************************
-
- import StdClass
-
- instance == (a,b) | Eq a & Eq b
- instance == (a,b,c) | Eq a & Eq b & Eq c
-
- instance < (a,b) | Ord a & Ord b
- instance < (a,b,c) | Ord a & Ord b & Ord c
-
- // fst :: !(!.a,.b) -> .a // t1 of (t1,t2)
- fst tuple :== t1 where (t1, _) = tuple
- // snd :: !(.a,!.b) -> .b // t2 of (t1,t2)
- snd tuple :== t2 where (_, t2) = tuple
-
- // fst3 :: !(!.a,.b,.c) -> .a // t1 of (t1,t2,t3)
- fst3 tuple :== t1 where (t1, _, _) = tuple
- // snd3 :: !(.a,!.b,.c) -> .b // t2 of (t1,t2,t3)
- snd3 tuple :== t2 where (_, t2, _) = tuple
- // thd3 :: !(.a,.b,!.c) -> .c // t3 of (t1,t2,t3)
- thd3 tuple :== t3 where (_, _, t3) = tuple
-
- app2 :: !(.(.a -> .b),.(.c -> .d)) !(.a,.c) -> (.b,.d) // app2 (f,g) (a,b) = (f a,g b)
- app3 :: !(.(.a -> .b),.(.c -> .d),.(.e -> .f)) !(.a,.c,.e) -> (.b,.d,.f)
- // app3 (f,g,h) (a,b,c) = (f a,g b,h c)
-
- curry :: !.((.a,.b) -> .c) .a .b -> .c // curry f a b = f (a,b)
- uncurry :: !.(.a -> .(.b -> .c)) !(.a,.b) -> .c // uncurry f (a,b) = f a b
-